// 5. 具体访问者：HTML 导出器
using System.Text;

/// <summary>
/// HTML导出访问者类（访问者模式中的ConcreteVisitor）
/// 将文档元素导出为HTML格式
/// </summary>
public class HtmlExportVisitor : IDocumentVisitor
{
  /// <summary>
  /// 导出的HTML输出内容
  /// </summary>
  public StringBuilder Output { get; } = new();

  /// <summary>
  /// 访问文本段落元素，将其转换为HTML段落标签
  /// </summary>
  /// <param name="text">文本段落对象</param>
  public void Visit(TextSegment text)
  {
    Output.AppendLine($"<p>{text.Content}</p>");
  }

  /// <summary>
  /// 访问图片元素，将其转换为HTML图片标签
  /// </summary>
  /// <param name="image">图片对象</param>
  public void Visit(ImageSegment image)
  {
    Output.AppendLine($"<img src=\"{image.Src}\" />");
  }
}